// src/api/contentService.js

// 从 axios 框架导入 axios 组件
import axios from 'axios';
import { getTokenName, messageConfirm, messageTip, removeToken } from '../util/utils'; // 假设 utils.js 文件在 util 目录下

// 创建 axios 实例，并设置不同的 baseURL
const axiosInstance1 = axios.create({
    baseURL: "http://localhost:8089", // 文件1的接口前缀
});

// 导出 HTTP 请求方法
export function doGet(url, params) {
    return axiosInstance1({
        method: 'get',
        url,
        params,
    });
}

export function doPost(url, data) {
    return axiosInstance1({
        method: 'post',
        url,
        data,
    });
}

export function doPut(url, data) {
    return axiosInstance1({
        method: 'put',
        url,
        data,
    });
}

export function doDelete(url, params) {
    return axiosInstance1({
        method: 'delete',
        url,
        params,
    });
}

// 添加请求拦截器
axiosInstance1.interceptors.request.use(
    (config) => {
        let token = window.sessionStorage.getItem(getTokenName());
        if (!token) {
            token = window.localStorage.getItem(getTokenName());
        }
        if (token) {
            config.headers['Authorization'] = `Bearer ${token}`; // 添加 Bearer 前缀是常见的做法
        }
        return config;
    },
    (error) => {
        return Promise.reject(error);
    }
);

// 添加响应拦截器
axiosInstance1.interceptors.response.use(
    (response) => {
        if (response.data.code > 900) { // 根据实际情况调整错误码判断逻辑
            messageConfirm(response.data.msg + '，是否重新去登录？').then(() => {
                removeToken();
                window.location.href = '/';
            }).catch(() => {
                messageTip('取消去登录', 'warning');
            });
            return Promise.reject(new Error('Token validation failed'));
        }
        return response;
    },
    (error) => {
        return Promise.reject(error);
    }
);